#ifndef PREDICATE_H
#define PREDICATE_H
#include <iostream>

class Point 
{
public:
	double x, y;

	Point() 
	{
		x = 0;
		y = 0;
	}

	Point(double x_, double y_) 
	{
		x = x_;
		y = y_;
	}

	Point(const Point &p) 
	{
		x = p.x;
		y = p.y;
	}
};

bool operator<(const Point &p1, const Point &p2);
bool operator==(const Point &p1, const Point &p2);

class Line
{
public:
	Point a, b;

	Line(const Point &a_, const Point &b_): a(a_), b(b_) 
	{
	}

	Line(double ax, double ay, double bx, double by) 
	{
		a.x = ax;
		a.y = ay;
		b.x = bx;
		b.y = by;
	}
};

namespace std 
{
	ostream& operator<<(ostream &s, const Point &a);
}

int left_turn(const Point &a, const Point &b, const Point &c);

int closer(const Line &l, const Point &a, const Point &b);
#endif